-- Control de tipos de documento en los campos 
--   tipocuit   : que venga siempre uno fiscal
--   tipopaddoc : que venga siempre uno NO fiscal
--

CREATE OR REPLACE FUNCTION tg_pad_ins_upd_tipocuit()
  RETURNS trigger AS
$BODY$
DECLARE
BEGIN
IF (new.tipocuit is not null) AND
   not exists (SELECT * FROM PADDOC WHERE TIPO = new.tipocuit AND esfiscal = 'S') 
   THEN
     raise exception 'El tipo de documento fiscal es erróneo, verifique.';  
END IF;

IF (new.tipopaddoc is not null) AND
   not exists (SELECT * FROM PADDOC WHERE TIPO = new.tipopaddoc AND esfiscal = 'N') 
   THEN
     raise exception 'El tipo de documento de la persona es erróneo, debe ser no fiscal. Verifique.';  
END IF;

RETURN NEW;
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION tg_pad_ins_upd_tipocuit()
  OWNER TO abacouser;

CREATE TRIGGER pad_ins_upd_tipocuit
  BEFORE INSERT OR UPDATE
  ON pad
  FOR EACH ROW
  EXECUTE PROCEDURE tg_pad_ins_upd_tipocuit();


-- ==================================
SELECT aaVersion('442.00','441.02');
-- ==================================
